#if !defined(ximera_scripting_iscriptingsystem_hpp)
#define ximera_scripting_iscriptingsystem_hpp

// -----------------------------------------------------------

#include <ximera/config.hpp>
#include <ximera/common/sharedptr.hpp>
#include <ximera/system/isystem.hpp>

#include <ximera/scripting/iscript.hpp>
#include <ximera/scripting/ivirtualmachine.hpp>

namespace ximera { namespace scripting
{
    class XIMERA_API IScriptingSystem : public system::ISystem
    {
    public:
        virtual ~IScriptingSystem();

        virtual Language language() const = 0;

        virtual IVirtualMachine* createVirtualMachine() = 0;
        virtual IScript* createScript() = 0;

        virtual IScript* loadScript(String const& fileName) = 0;
    };
}}

// -----------------------------------------------------------

#endif